package com.whut.controller;

import com.alibaba.fastjson.JSONObject;
import com.whut.mapper.AmpointMapper;
import com.whut.service.SummaryReportService;
import com.whut.v_dataMap.SummaryReport.Part2.projectInfoMap;
import com.whut.v_dataMap.SummaryReport.Part3VO.XMLVO.ReportDataVO;
import com.whut.v_dataMap.SummaryReport.Part3VO.*;
import com.whut.v_dataMap.SummaryReport.Part3VO.RiskDescriptionVO.RiskDescriptionTableVO;
import com.whut.v_dataMap.SummaryReport.part4VO.MapTreeVO;
import com.whut.v_model.Ampoint;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.List;
import java.util.Map;

/**
 * 总报相关的接口
 */
@Controller
@RequestMapping("/summaryReport")
public class SummaryReportController {

    @Resource
    private SummaryReportService summaryReportService;
    @Resource
    private AmpointMapper ampointMapper;



    /**
     *根据委托方id和时间范围查询问题信息（分子公司),用于前端页面展示
     */
    @ResponseBody
    @PostMapping("/getTaskProblemTreeInfoByIdAndTime")
    List<MapTreeVO> getTaskProblemTreeInfoByIdAndTime(Integer contractId, String startTime, String endTime){
        return summaryReportService.getTaskProblemTreeInfoByIdAndTime(contractId, startTime, endTime);
    }

    /**
     * 根据委托方id和时间范围查询问题信息,用于前端页面展示
     */
    @ResponseBody
    @PostMapping("/getAllProblemTreeInfoByIdAndTime")
    List<MapTreeVO> getAllProblemTreeInfoByIdAndTime(Integer contractId, String startTime, String endTime){
        return summaryReportService.getAllProblemTreeInfoByIdAndTime(contractId, startTime, endTime);
    }

    /**
     * 根据前端选择的图片和Mkey更新pc表
     */
    @ResponseBody
    @PostMapping("/updatePCBySelectedPic")
//    int updatePCBySelectedPic(Integer Mkey,String selectedPic){
//        return summaryReportService.updatePCBySelectedPic(Mkey, selectedPic);
//    }
    int updatePCBySelectedPic(String problemPic){
        System.out.println("problemPic:"+problemPic);
        return summaryReportService.updatePCBySelectedPic(problemPic);
    }

    /**
     * 重置图片选择
     */
    @ResponseBody
    @PostMapping("/resetPCSelectedPic")
    public int resetPCSelectedPic(Integer contractId, String startTime, String endTime){
        return summaryReportService.resetPCSelectedPic(contractId, startTime, endTime);
    }

    /**
     *基于前端选择过的图片生成报告（分子公司
     */
    @ResponseBody
    @PostMapping("/generateTaskProblemReportInfoByIdAndTime")
    public String generateTaskProblemReportInfoByIdAndTime(Integer contractId, String startTime, String endTime){
        return summaryReportService.generateTaskProblemReportInfoByIdAndTime(contractId, startTime, endTime);
    }

    /**
     * 基于前端选择过的图片生成报告
     */
    @ResponseBody
    @PostMapping("/generateAllProblemReportInfoByIdAndTime")
    public String generateAllProblemReportInfoByIdAndTime(Integer contractId, String startTime, String endTime){
        return summaryReportService.generateAllProblemReportInfoByIdAndTime(contractId, startTime, endTime);
    }


    /**
     * 生成第四部分的报告-问题分析模块（分子公司
     */
    @ResponseBody
    @PostMapping("/generateTaskProblemReportInfoAll")
    public String generateTaskProblemReportInfoAll(Integer contractId, String startTime, String endTime){
        return summaryReportService.generateTaskProblemReportInfoAll(contractId, startTime, endTime);
    }


    /**
     * 生成第四部分的报告-问题分析模块
     */
    @ResponseBody
    @PostMapping("/generateAllProblemReportInfoAll")
    public String generateAllProblemReportInfoAll(Integer contractId, String startTime, String endTime){
        return summaryReportService.generateAllProblemReportInfoAll(contractId, startTime, endTime);
    }

    /**
     * 生成封面
     */
    @ResponseBody
    @PostMapping("/generateCoverReport")
    String generateCoverReport(Integer contractId, String startTime, String endTime){
        return summaryReportService.generateCoverReport(contractId, startTime, endTime);
    }

    /**
     * @author 汪琪瑞
     * @create 2021/1/21 下午 2:15
     * @desc 生成第一部分报告--检查情况综述模块
     **/
    @ResponseBody
    @PostMapping("/getPart1Report")
    String generatePart1Report(Integer contractId, String startTime, String endTime,@RequestParam("ampoint") List<Double> ampoint) {
        return summaryReportService.generatePart1Report(contractId, startTime, endTime, ampoint);
    }


    /**
     * @author 汪琪瑞
     * @create 2021/1/21 下午 2:15
     * @desc 生成projectInfo, 给前端以获取实测实量分数
     **/
    @ResponseBody
    @PostMapping("/getProjectInfo")
    List<projectInfoMap> generateProjectInfo(Integer contractId, String startTime, String endTime) {
        return summaryReportService.generateProjectInfo(contractId, startTime, endTime);
    }

    /**
     * @author 汪琪瑞
     * @create 2021/1/21 下午 2:15
     * @desc 生成第二部分的报告-综合评价情况模块
     **/
    @ResponseBody
    @PostMapping("/getPart2Report")
    String generatePart2Report(Integer contractId, String startTime, String endTime,@RequestParam("ampoint") List<Double> ampoint) {
        return summaryReportService.generatePart2Report(contractId, startTime, endTime, ampoint);
    }

    /**
     * @author： wenyihan
     * @description：根据选择的第一级类别，返回不同种表格（例：安全文明->firstId:1、质量安全->firstId:628）
     * @date： 19:01 2021/1/30
     * @param： [contractId, startTime, endTime, firstId]
     * @return： com.whut.v_dataMap.SummaryReport.Part3VO.RankTableVO
     */
    @ResponseBody
    @PostMapping("/getRankTableData")
    public RankTableVO getRankTableData(Integer contractId, String startTime, String endTime, Integer firstId){
        return summaryReportService.getRankTableData(contractId, startTime, endTime, firstId);
    }

    /**
     * @author： wenyihan
     * @description：获取A\B\C类问题的结论,①riskBasicData：每项第四级对应的问题数量+换算后所占比例；②levelList：a/b/c类包含的第四级名称
     * @date： 13:16 2021/1/30
     * @param： [contractId, startTime, endTime, firstId]
     * @return： java.util.Map<java.lang.String,java.util.List>
    */
    @ResponseBody
    @PostMapping("/getLevelConclusion")
    public Map<String, List> getLevelConclusion(Integer contractId, String startTime, String endTime, Integer firstId){
        return summaryReportService.getLevelConclusion(contractId, startTime, endTime, firstId);
    }

    /**
     * @author： wenyihan
     * @description：返回隐患分布表格
     * @date： 17:15 2021/1/31
     * @param： [contractId, startTime, endTime, firstId]
     * @return： java.util.List<com.whut.v_dataMap.SummaryReport.Part3VO.RiskDescriptionVO.RiskDescriptionTableVO>
    */
    @ResponseBody
    @PostMapping("/getRiskDescription")
    public List<RiskDescriptionTableVO> getRiskDescription(Integer contractId, String startTime, String endTime, Integer firstId){
        return summaryReportService.getRiskDescription(contractId, startTime, endTime, firstId);
    }

    /**
     * @author： wenyihan
     * @description：测试用接口
     * @date： 21:10 2021/1/31
     * @param： [contractId, startTime, endTime, firstId]
     * @return： java.util.List<com.whut.v_dataMap.SummaryReport.Part3VO.ProjectListVO>
    */
    @ResponseBody
    @PostMapping("/getPart3BasicData")
    public List<ProjectListVO> getPart3BasicData(Integer contractId, String startTime, String endTime, Integer firstId){
        return summaryReportService.getPart3BasicData(contractId, startTime, endTime, firstId);
    }

    /**
     * 获取所有第一级检查
     * @param contractId
     * @param startTime
     * @param endTime
     */
    @ResponseBody
    @PostMapping("getLevel1IdAndName")
    public List<Level1IdAndNameVO> getLevel1IdAndName(Integer contractId, String startTime, String endTime){
        return summaryReportService.getLevel1IdAndName(contractId, startTime, endTime);
    }

    @ResponseBody
    @PostMapping("/getSummaryReportPart3")
    public String getSummaryReportPart3(@RequestBody ReportDataVO reportData){
        int contractId = reportData.getContractId();
        String startTime = reportData.getStartTime();
        String endTime = reportData.getEndTime();
        return summaryReportService.getSummaryReportPart3(contractId, startTime, endTime, reportData);
    }
    @ResponseBody
    @PostMapping("/updateOrSavePoint")
    public int updateOrSaveByContractIdAndProjectName(@RequestParam("cpPointList") String cpPointList){
        List<Ampoint> ampointList= JSONObject.parseArray(cpPointList,Ampoint.class);
        return ampointMapper.updateOrSaveByContractIdAndProjectName(ampointList);
    }
}
